﻿using Credinka.Ayni.GEN.UTL;
using Credinka.Ayni.SEA.EN;
using Credinka.Ayni.SEA.RN;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Menu : System.Web.UI.Page
{
    private enMenu oenMenu;
    private rnMenu ornMenu;
    private rnDescripcion ornDescripcion;
    private List<enMenu> loenMenu;
    private List<enDescripcion> loenDescripcion;

    private int idMenu = 0;

    #region Metodos

    private void Botonera(Button objeto, string estilo, bool habilitado)
    {
        objeto.CssClass = estilo;
        objeto.Enabled = habilitado;
    }

    private void CargarSistema()
    {
        ornDescripcion = new rnDescripcion();
        ddlSistema.DataSource = ornDescripcion.ListarSistema();
        ddlSistema.DataTextField = "Descripcion";
        ddlSistema.DataValueField = "CodigoElemento";
        ddlSistema.DataBind();
        ddlSistema.Items.Insert(0, new ListItem("TODOS", "0"));
    }

    private void ListarSistema(TreeNodeCollection nodoSistema, int padre, int pCodigoSistema)
    {
        loenMenu = new List<enMenu>();
        ornMenu = new rnMenu();

        loenMenu = ornMenu.ListarPorSistema(pCodigoSistema).Where(t => t.Contenedor == padre).ToList();
        List<string> sistema = (from cust in loenMenu select cust.entDescripcion.Descripcion).Distinct().ToList();
        List<int> sistemaCodigo = (from cust in loenMenu select cust.CodigoSistema).Distinct().ToList();

        for (int i = 0; i < sistema.Count(); i++)
        {
            TreeNode NuevoNodoSistema = new TreeNode(sistema[i], sistemaCodigo[i].ToString(), "", "", "padre");
            nodoSistema.Add(NuevoNodoSistema);
            ListarMenu(NuevoNodoSistema.ChildNodes, 0, sistemaCodigo[i]);
        }
    }

    protected void ListarMenu(TreeNodeCollection nodo, int padre, int pCodigoSistema)
    {
        int Codigo;
        string Nombre;
        ornMenu = new rnMenu();
        loenMenu = new List<enMenu>();
        loenMenu = ornMenu.ListarPorSistema(pCodigoSistema).ToList().Where(t => t.Contenedor == padre).ToList();

        foreach (var hijos in loenMenu)
        {
            Codigo = hijos.IdMenu;
            Nombre = hijos.Nombre;
            TreeNode NuevoNodo = new TreeNode(Nombre, Codigo.ToString());
            nodo.Add(NuevoNodo);
            ListarMenu(NuevoNodo.ChildNodes, Codigo, pCodigoSistema);
        }
    }

    #endregion

    #region Eventos
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            CargarSistema();
            ListarSistema(trvMenu.Nodes, 0, int.Parse(ddlSistema.SelectedValue));
            Botonera(btnEliminar, "button2", false);
        }
    }

    protected void trvMenu_SelectedNodeChanged(object sender, EventArgs e)
    {
        if (trvMenu.SelectedNode.Target == string.Empty)
        {
            idMenu = int.Parse(trvMenu.SelectedValue);
            hdfMenu.Value = idMenu.ToString();
            btnModificar.Disabled = false;
            btnModificar.Attributes.Add("class", "skip");
            Botonera(btnEliminar, "skip", true);
        }
        else
        {
            hdfMenu.Value = string.Empty;
            Botonera(btnEliminar, "button2", false);
            
            btnModificar.Disabled = true;
            btnModificar.Attributes.Add("class", "button2");
        }
    }

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        Botonera(btnEliminar, "button2", false);
        trvMenu.Nodes.Clear();
        ListarSistema(trvMenu.Nodes, 0, int.Parse(ddlSistema.SelectedValue));
    }

    protected void btnSi_Click(object sender, EventArgs e)
    {
        oenMenu = new enMenu();
        ornMenu = new rnMenu();
        oenMenu.IdMenu = int.Parse(trvMenu.SelectedValue);
        oenMenu.AudIPModificacion = utlAuditoria.ObtenerDireccionIP();
        oenMenu.AudMacModificacion = utlAuditoria.ObtenerDireccionMAC();
        oenMenu.AudNombreUsuarioModificacion = utlAuditoria.ObtenerUsuarioDominio();
        int idMenu = ornMenu.Eliminar(oenMenu);

        if (idMenu != -1)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(@"<script language='javascript'>");
            sb.Append(@"var lbl =  AbrirModal('330', '210', true, false, '#confirmacion', false);");
            sb.Append(@"$('#confirmacion').css('display', 'block');");
            sb.Append(@"</script>");
            ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
        }
    }

    #endregion
}